# -*- coding: cp1252 -*-
import sys
from cliente.frmLogin import *
from cliente.frmChat import *
from cliente.frmMain import *
from common.jabber import Jabber
from PyQt4 import QtGui, QtCore

class ChatWindow(QtGui.QWidget, Ui_frmChat):
	def __init__(self):
		QtGui.QDialog.__init__(self)
		self.setupUi(self)
class LoginWindow(QtGui.QDialog, Ui_frmLogin):
	def __init__(self,parent):
		QtGui.QDialog.__init__(self)
		# guarda al padre
		self.parent = parent

		# Carga la ventana de Login
		self.setupUi(self)

                # Conectar las señales
                self.connect(self.btnAceptar,QtCore.SIGNAL("clicked()"),self.btnAceptar_clicked)
        def btnAceptar_clicked(self):
		servidor = str(self.cmbServidores.currentText()) # obtiene servidor del comboBox
		self.parent.servidor = servidor.split("@")[1] # cuentadeservidor@servidorjabber
		usr = str(self.edtUsuario.text())
		passwd = str(self.edtPassword.text())
		try:
			self.parent.jabber # Está definido self.parent.jabber
		except AttributeError: # Si no haz lo de abajo		
			# Cliente jabber
			jab = Jabber()
			if jab.xmppConnect(host=self.parent.servidor,usuario=usr,password=passwd) == False:
				print "Error de conexión."
			else:
				self.parent.jabber = jab
				self.parent.jabber.registerHandler('message',self.parent.recibirMensaje)
				self.parent.jabber.start()
				# Hacer una petición de Login al servidor mediante xmpppy
				print self.parent.jabber.sendMessage('servidor@'+self.parent.servidor,'LOGIN %s %s' % (self.edtUsuario.text(),self.edtPassword.text()))
	def loggedIn(self):
		self.parent.frmChat = ChatWindow()
		self.parent.frmChat.show()
		self.accept()

class ModeloEmpresarial(QtGui.QMainWindow,Ui_frmMain):
	loggedin = False
        def __init__(self):
                # Se crea una aplicación Qt
                # --------------------------
                # Por oscuras razones se tiene que crear el QApplication antes
                # que ninguna otra cosa
                self.app = QtGui.QApplication(sys.argv)

                # Se llama al constructor del padre
                QtGui.QMainWindow.__init__(self)
                
                # Se inicializan los formularios
		self.setupUi(self)
		self.frmLogin = LoginWindow(self)

		# Conecta señales
		self.connect(self.actionLog_in,QtCore.SIGNAL("triggered()"),self.actionLog_in_triggered)
		self.connect(self.frmLogin,QtCore.SIGNAL("loggedIn()"),self.frmLogin.loggedIn)

                # Muestra la ventana e inicia el loop
		self.frmLogin.edtUsuario.setFocus()
                self.show()
		
		sys.exit(self.app.exec_())
	def actionLog_in_triggered(self):
		self.frmLogin.setModal(True)
		self.frmLogin.show()

	def recibirMensaje(self, con, event):
		print event.getBody()
		mensaje = event.getBody()
		try:
			# Analizador de mensajes del servidor
			if mensaje == "LOGIN SATISFACTORIO":
				self.loggedin = True
				self.frmLogin.emit(QtCore.SIGNAL("loggedIn()"))
		except:
			pass
        
def Main():
        principal = ModeloEmpresarial()
if __name__ == "__main__":
        Main()
        
